// 引入express    Express 是一个基于Node.js 封装的上层服务框架，它提供了更简洁的API,它通过中间件和路由让程序的组织管理变的更加容易；它提供了丰富的HTTP 工具
const express = require('express')

//创建应用对象
const app = express()

//创建路由规则
app.get('/server', (req, res) => {

    //设置响应头,设置允许跨域
    res.setHeader('Access-Control-Allow-Origin', '*');
    //res是对响应报文的封装
    res.send('Hello Express')
})
// all表示可以接收任意类型的请求 当出现不是预定的请求头信息时,服务器会发返回一个请求来验证请求头信息是否可用
app.all('/server', (req, res) => {

    //设置响应头,设置允许跨域
    res.setHeader('Access-Control-Allow-Origin', '*');
    //接收所有类型的头信息,包含自定义头信息
    res.setHeader('Access-Control-Allow-Headers', '*');
    //res是对响应报文的封装
    res.send('Hello Express for post')

})

app.get('/json-server', (req, res) => {

    //设置响应头,设置允许跨域
    res.setHeader('Access-Control-Allow-Origin', '*');
    //接收所有类型的头信息,包含自定义头信息
    res.setHeader('Access-Control-Allow-Headers', '*');
    //响应一个数据对象
    const data = {
        name: 'zyj',
        age: 18,
        gender: '男',

    }
    //将对象转换成JSON格式的字符串,不能直接返回一个数据对象
    res.send(JSON.stringify(data))


})

app.all('/timeout', (req, res) => {

    //设置响应头,设置允许跨域
    res.setHeader('Access-Control-Allow-Origin', '*');
    //接收所有类型的头信息,包含自定义头信息
    res.setHeader('Access-Control-Allow-Headers', '*');
    //三秒钟之后再把结果返回给客户端
    setTimeout(() => {
        res.send(JSON.stringify('响应延迟'))
    }, 3000)

})

//axios服务
app.all('/axios-server', (req, res) => {

    //设置响应头,设置允许跨域
    res.setHeader('Access-Control-Allow-Origin', '*');
    //接收所有类型的头信息,包含自定义头信息
    res.setHeader('Access-Control-Allow-Headers', '*');
    //三秒钟之后再把结果返回给客户端
    const data = {name: 'zengYuJie'}
    res.send(JSON.stringify(data))

})


//监听端口启动服务
app.listen(8000, () => {
    console.log('服务器已经启动,8000端口正在监听')
})
